function multiplyBy2(strNum) {
    let carry = 0; // 进位
    const result = []; // 存放结果的数组

    // 从字符串的最后一位开始，逆序遍历
    for (let i = strNum.length - 1; i >= 0; i--) {
        const digit = parseInt(strNum[i], 10); // 将字符转换为整数
        const doubledDigit = digit * 2 + carry; // 计算当前位的结果

        // 如果结果大于等于10，需要进位
        if (doubledDigit >= 10) {
            result.unshift((doubledDigit % 10).toString()); // 将当前位的个位数添加到结果数组
            carry = Math.floor(doubledDigit / 10); // 更新进位值
            console.log('carry', carry)
        } else {
            result.unshift(doubledDigit.toString()); // 将结果直接添加到结果数组
            carry = 0; // 无进位
        }
    }

    // 如果还有进位，将进位添加到最前面
    if (carry > 0) {
        result.unshift(carry.toString());
    }

    return result.join(''); // 将结果数组转换为字符串
}

const inputNumber = "123456789123456789";
const result = multiplyBy2(inputNumber);
console.log(result);
